package cn.tedu.lbs.basic.web.controller;

import cn.tedu.lbs.basic.web.service.LoginService;
import com.tarena.lbs.base.protocol.exception.BusinessException;
import com.tarena.lbs.base.protocol.model.Result;
import com.tarena.lbs.pojo.passport.param.AdminLoginParam;
import com.tarena.lbs.pojo.passport.param.UserLoginParam;
import com.tarena.lbs.pojo.passport.vo.LoginVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * 主要负责 全局登录接口
 * 1. 后台登录
 * 2. 小程序登录
 */
@RestController
@Slf4j
public class LoginController {
    @Autowired
    private LoginService loginService;
    /**
     * 后台登录接口
     */
    @PostMapping("/passport/admin/login")
    public Result<LoginVO> adminLogin(AdminLoginParam adminLoginParam) throws BusinessException {
        log.info("进入登录接口");
        Thread thread = Thread.currentThread();
        log.info("当前线程:{}",thread.getName());
        //controller 的接口开发的习惯
        /*
        大致 接口功能 分为 读和写
        读的接口 Result<**VO> 根据不同需求 填充不同的vo对象
        写的接口 Result<Void> data属性是空 只关注成功失败 code
        无论是 读还是写 具体的业务处理方式 controller不关心(典型的面向接口编程思维)
        读数据 controller返回什么data 要求service给我返回什么
         */
        LoginVO vo=loginService.doAdminLogin(adminLoginParam);
        return new Result<>(vo);
    }

    @PostMapping("/passport/user/login")
    public Result<LoginVO> userLogin(UserLoginParam userLoginParam) throws BusinessException {
        LoginVO vo=loginService.doUserLogin(userLoginParam);
        return new Result<>(vo);
    }
}











